There has been explosive growth in Internet traffic due to the increased number of Internet users, various service demands from those users, the implementation of new services, such as voice-over-IP (VOIP) or streaming applications, and the development of mobile Internet. Conventional routers, which act as relaying nodes connected to sub-networks or other routers, have accomplished their roles well, in situations in which the time required to process packets, determine their destinations, and forward the packets to the destinations is usually smaller than the transmission time on network paths. More recently, however, the packet transmission capabilities of high-bandwidth network paths and the increases in Internet traffic have combined to outpace the processing capacities of conventional routers.
This has led to the development of massively parallel, distributed architecture routers. A distributed architecture router typically comprises a large number of routing nodes that are coupled to each other via a plurality of switch fabric modules and an optional crossbar switch. Each routing node has its own routing (or forwarding) table for forwarding data packets via other routing nodes to a destination address.
Traditionally, a single processor is used to forward all packets in a router or switch. Even in routers with multiple forwarding table lookup threads, these threads are under control of a single processor and use a single forwarding table. Thus, conventional routers retain route information in a central location and do not distribute route information within the router. Also, since many prior art routers do not have multiple routing nodes, these routers do not experience the problems that arise when a distributed architecture combines routing nodes with small table space with more powerful routing nodes in a large route capacity router.
Furthermore, conventional routers do not provide any consistent mechanism for multi-protocol route distribution. Various ad-hoc mechanisms for selecting among routes learned through different route metrics are used on a per-instance basis. Typically, this is done by prioritizing the routing protocol types and by selecting the route from the highest priority routing protocol. When routes learned through one routing protocol are distributed to another routing protocol, there is no consistent mechanism for setting the metrics in the target routing protocol. Often only the matching metrics are used. Typically, adjusting the metrics of different routing protocols to optimize for network topology is done manually, leading to manually administered routes. Since prior art routers do not distribute control plane functionality, there has been no need in conventional routers for internal route distribution and route summarization techniques.
Therefore, there is a need in the art for improved high-speed routers. In particular, there is a need for a high-speed, distributed architecture router that is capable of distributing routing information across routes associated with different protocols. More particularly, there is a need for a high-speed, distributed architecture router that compares different metrics from different routing protocols in an effective manner.